package com.zmn.oms.model.bo.orderamount;

import com.zmn.oms.common.constant.OrderConsts;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 类描述：优惠计算结果
 * @author heciqi
 * @date 2020-06-03 14:08:02
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class OrderAmountCalcDIO implements Serializable {

    /**
     * 渠道ID (必填)
     */
    @NotNull(message = "channelId can not be empty")
    private Integer channelId;

    /**
     * 城市ID(必填)
     */
    @NotNull(message = "cityId can not be empty")
    private Integer cityId;

    /**
     * 前台产品Id(必填)
     */
    private Integer showProductId;

    /**
     * 用户id(必填)
     */
    @NotNull(message = "userId can not be empty")
    private Long userId;

    /**
     * 原价（渠道下单，可为空）
     */
    private Integer originalAmount;

    /**
     * 非必填（店铺下单会带优惠券码）
     */
    private List<String> itemCodes;

    /**
     * 服务项类型，目前仅支持两种类型： 1.非计价器订单 2.计价器订单
     * 若值不等于2，则均作为值等于1处理
     * @see OrderConsts#SERVICE_ITEM_TYPE_ORDER
     * @see OrderConsts#SERVICE_ITEM_TYPE_FAULT
     */
    @NotNull(message = "servItemType can not be empty")
    private Integer servItemType;

    /**
     * 订单业务类型：1保外业务（C），2保内业务（F），3工程业务（B）
     */
    @NotNull(message = "bizType can not be empty")
    private Integer bizType;
    /**
     * 延保订单,1.普通新单，2.延保订单
     */
    @NotNull(message = "extendedWarrantyOrder can not be empty")
    private Integer extendedWarrantyOrder;

    /**
     * 订单下单时间
     */
    @NotNull(message = "订单下单时间 不能为null")
    private Date orderTime;
}
